#version 460 core
out vec4 FragColor; //输出变量
in vec4 vertexColor;// 从顶点着色器传来的输入变量（名称相同、类型相同）
in vec3 myColor;     // 从顶点着色器传来的输入变量（名称相同、类型相同）
uniform vec4 ourColor;  // 在OpenGL程序代码中设定这个变量
in vec2 TexCoord;   //顶点着色器输出的纹理坐标
/*
使用glUniform1i，我们可以给纹理采样器分配一个位置值，这样的话我们能够在一个片段着色器中设置多个纹理。一个纹理的位置值通常称为一个纹理单元(Texture Unit)。
一个纹理的默认纹理单元是0，它是默认的激活纹理单元，所以教程前面部分我们没有分配一个位置值
*/
//uniform sampler2D ourTexture; // 采样器 声明一个uniform sampler2D把一个纹理添加到片段着色器中(1个纹理单元可以不用设置uniform值)

//两个采样器 (需要设置uniform值)
uniform sampler2D texture1;
uniform sampler2D texture2;
void main()
{
    //使用哪种输出颜色
   //FragColor = vertexColor;
   //FragColor = ourColor;
   //FragColor = vec4(myColor, 1.0);

   //纹理
   //FragColor = texture(ourTexture, TexCoord);//用GLSL内建的texture函数来采样纹理的颜色，它第一个参数是纹理采样器，第二个参数是对应的纹理坐标。
   //颜色和纹理组合
  // FragColor = texture(ourTexture, TexCoord) * vec4(myColor, 1.0);

   //两个纹理
   /*
   最终输出颜色现在是两个纹理的结合。GLSL内建的mix函数需要接受两个值作为参数，并对它们根据第三个参数进行线性插值。如果第三个值是0.0，它会返回第一个输入；如果是1.0，会返回第二个输入值。0.2会返回80%的第一个输入颜色和20%的第二个输入颜色，即返回两个纹理的混合色。
   */
   FragColor = mix(texture(texture1, TexCoord), texture(texture2, TexCoord), 0.2);
}